package cn.jdbc.TestFu.school;

import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
//通过反射获得方法
public class Test01 {
    public static void main(String[] args)throws Exception {
//        加载指定名称(类的完整限定名)的类
//       类的完整限定名=包名+类名
//        成功加载后，aClass可以代替User类本身，称之为类对象
//        其目的是动态加载类的对象
        Class<?> aClass = Class.forName("cn.jdbc.TestFu.school.User");
//        使用类对象aClass的newInstance方法方法生成User类的实例
        Object o = aClass.newInstance();
//        使用类对象getMethod方法来查找User类里面的set gat方法
//        查找成功后，得到的setName可以代表User类中的setName方法，称之为方法对象
        Method setName = aClass.getMethod("setName", String.class);
//        使用方法对象的invoke方法来调用该方法
        setName.invoke(o,"小刚");
        Method getName = aClass.getMethod("getName");
        Object invoke = getName.invoke(o);
        System.out.println(invoke);
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//        user是User的实例或的对象
//        User user=new User();
//        user.setName("小明");
//        System.out.println(user.getName());

    }
}
class User{
    private String name;
    private  Integer age;
    public void setName(String name) {
        this.name = name;
        System.out.println("正在调用"+name);
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public Integer getAge() {
        return age;
    }
}
